﻿#include "pch.h"
#include "TGSDK.h"
#include "tgsdkmanager.h"

/**
 * 打开设备
 * @brief TG_OpenDev
 * @param vendor_id
 * @param product_id
 * @return
 */
int TG_OpenDev(unsigned short vendor_id, unsigned product_id) {
  return INSTANCE(TGSDKManager).OpenDev(vendor_id, product_id);
}

/**
 * 关闭设备
 * @brief TG_CloseDev
 * @return
 */
int TG_CloseDev() { return INSTANCE(TGSDKManager).CloseDev(); }

/**
 * 写数据
 * @brief TG_WriteData
 * @param data
 * @param size
 * @param tag
 * @param tagSize
 * @return
 */
int TG_WriteData(const char *data, int size, const char *tag, int tagSize) {
  return INSTANCE(TGSDKManager).WriteData(data, size, tag, tagSize);
}

/**
 * 写文本数据，异步回调
 * @brief TG_WriteData2
 * @param data
 * @param size
 * @param tag
 * @param tagSize
 * @param l
 * @return
 */
void TG_WriteData2(const char *data, int size, const char *tag, int tagSize,
                   TG_WriteFileListener l) {
  INSTANCE(TGSDKManager).WriteData2(data, size, tag, tagSize, l);
}

/**
 * 写文件
 * @brief TG_WriteFile
 * @param filePath
 * @param tag
 * @param tagSize
 * @param l
 */
void TG_WriteFile(const char *filePath, const char *tag, int tagSize,
                  TG_WriteFileListener l) {
  return INSTANCE(TGSDKManager).WriteFile(filePath, tag, tagSize, l);
}

/**
 * 反初始化
 * @brief UInit
 * @return
 */
int TG_UInit() { return INSTANCE(TGSDKManager).UInit(); }

/**
 * 初始化
 * @brief TG_Init
 * @param l
 * @return
 */
int TG_Init(TG_OnHIDListener l1, TG_OnFrameListener l2,
            TG_OnReadFileListener l3) {
  return INSTANCE(TGSDKManager).Init(l1, l2, l3);
}

/**
 * 停止发送数据
 * @brief TG_Stop
 * @return
 */
int TG_Stop() { return INSTANCE(TGSDKManager).Stop(); }

/**
 * 取消随机文件，此时不会写完随机文件，并且会删掉缓存文件
 * @brief TG_CancelRandomFile
 */
void TG_CancelRandomFile() { return INSTANCE(TGSDKManager).cancelRandomFile(); }

/**
 * 停止随机文件，此时会写完随机文件
 * @brief TG_StopRandomFile
 */
void TG_StopRandomFile() { return INSTANCE(TGSDKManager).stopRandomFile(); }

/**
 * 暂停随机文件
 * @brief TG_PauseRandomFile
 */
void TG_PauseRandomFile() { return INSTANCE(TGSDKManager).pause(); }

/**
 * 恢复随机文件
 * @brief TG_ResumeRandomFile
 */
void TG_ResumeRandomFile() { return INSTANCE(TGSDKManager).resume(); }

/**
 * 写随机文件
 * @brief TG_WriteRandomFile
 * @param filePath 文件路径
 * @param fileName  文件名称带后缀
 * @param fileExtension 文件后缀类型
 * @param l 回调函数
 */
void TG_WriteRandomFile(const char *filePath, int fileExtension,
                        TG_WriteRandomFileListener l) {
  return INSTANCE(TGSDKManager).WriteRandomFile(filePath, fileExtension, l);
}
